<?php

namespace App\Containers\AppSection\Pledge\Models;

use App\Containers\AppSection\File\Models\File;
use App\Ship\Parents\Models\Model;
use Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
use Staudenmeir\EloquentJsonRelations\Relations\BelongsToJson;

/**
 * Права требования по ДДУ
 *
 * @property int $id Id
 * @property string $number Номер
 * @property string $date Дата
 * @property string $developer Застройщик
 * @property string $ogrn_developer ОГРН(Застройщик)
 * @property string $registration_region Регион регистрации права участника долевого строительства
 * @property string $registration_number Номер регистрации права участника долевого строительства
 * @property string $sum Уплаченная сумма застройщику
 * @property string $address Адрес
 * @property string $total_area_type Тип площади ['meter', 'ga']
 * @property string $total_area Общая проектная площадь
 * @property string $floor Этаж
 * @property string $floors_number Общая этажность здания
 * @property string $conditional_number Условный номер жилого помещения
 * @property string $transfer_date Срок передачи жилого помещения Застройщиком
 * @property string $other_information Иные сведения
 *
 * @property File[] $plans Технический план
 * @property File[] $documents Документы
 */
class DDU extends Model
{
    use HasJsonRelationships;

    public $timestamps = false;
    protected $table = 'pledge_ddu';
    protected $casts = [
        'plans' => 'json',
        'documents' => 'json',
        'transfer_date' => 'date',
    ];

    protected $fillable = [
        'number',
        'date',
        'developer',
        'ogrn_developer',
        'registration_region',
        'registration_number',
        'sum',
        'address',
        'total_area_type',
        'total_area',
        'floor',
        'floors_number',
        'conditional_number',
        'transfer_date',
        'other_information',
        'plans',
        'documents',
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'DDU';

    /**
     * Технический план
     * @return BelongsToJson Files
     */
    public function plans(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'plans');
    }

    /**
     * Документы
     * @return BelongsToJson Files
     */
    public function documents(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'documents');
    }
}
